package com.justRun;

import java.util.ArrayList;

import com.androidplot.series.XYSeries;

public class SimpleXYSeries implements XYSeries {
	private ArrayList<Double> tableauVitesses, tableauTemps;
	
	public SimpleXYSeries(ArrayList<Double> tabVitesses, ArrayList<Double> tabTemps, double stepValue) {
		tableauTemps = tabTemps;
		tableauVitesses = tabVitesses;
		epuration();
		lissage();
	}
	
	public void epuration() {
		for(int i = 1; i < size(); i++) {
			if(tableauVitesses.get(i-1) > 0.5 && tableauVitesses.get(i) > 10 * tableauVitesses.get(i-1)) {
				tableauVitesses.remove(i);
				tableauTemps.remove(i);
				i--;
			}
		}
	}

	public void lissage() {
		int i = 0, j;
		double somme;
		double ref;
		while (i < tableauVitesses.size()) {
			ref = tableauVitesses.get(i);
			somme = ref;
			j=1;
			while ((i+j) < tableauVitesses.size() && tableauVitesses.get(i + j) <= 1.2 * ref && tableauVitesses.get(i + j) >= 0.8 * ref) {
				somme += tableauVitesses.get(i+j);
				tableauVitesses.remove(i+j);
				tableauTemps.remove(i+j);
				j++;
			}
			tableauVitesses.set(i, somme/j);
			i++;
		}
	}
	
	@Override
	public String getTitle() {
		return "";
	}

	@Override
	public int size() {
		return tableauTemps.size();
	}

	@Override
	public Number getX(int index) {
		return tableauTemps.get(index);
	}

	@Override
	public Number getY(int index) {
		return tableauVitesses.get(index);
	}
	
	public double getVMax() {
		double vMax = 0;
		for(double v : tableauVitesses) {
			if (v>vMax) vMax = v;
		}
		return vMax;
	}
}
